package com.lw.entity.table;

import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;


/**
 * 系统日志表 表定义层。
 *
 * @author lw
 * @since 2025年05月14日 00:26:38
 */
public class TbLogTableDef extends TableDef {

    private static final long serialVersionUID = 1L;

    /**
     * 系统日志表
     */
    public static final TbLogTableDef TB_LOG = new TbLogTableDef();

    /**
     * 主键
     */
    public final QueryColumn ID = new QueryColumn(this, "id");

    /**
     * IP地址
     */
    public final QueryColumn IP = new QueryColumn(this, "ip");

    /**
     * 终端系统
     */
    public final QueryColumn OS = new QueryColumn(this, "os");

    /**
     * 城市
     */
    public final QueryColumn CITY = new QueryColumn(this, "city");

    /**
     * 方法名
     */
    public final QueryColumn METHOD = new QueryColumn(this, "method");

    /**
     * 日志模块
     */
    public final QueryColumn MODULE = new QueryColumn(this, "module");

    /**
     * 浏览器
     */
    public final QueryColumn BROWSER = new QueryColumn(this, "browser");

    /**
     * 日志内容
     */
    public final QueryColumn CONTENT = new QueryColumn(this, "content");

    /**
     * 创建人ID
     */
    public final QueryColumn CREATE_BY = new QueryColumn(this, "create_by");

    /**
     * 省份
     */
    public final QueryColumn PROVINCE = new QueryColumn(this, "province");

    /**
     * 逻辑删除标识(1-已删除 0-未删除)
     */
    public final QueryColumn IS_DELETED = new QueryColumn(this, "is_deleted");

    /**
     * 创建时间
     */
    public final QueryColumn CREATE_TIME = new QueryColumn(this, "create_time");

    /**
     * 请求路径
     */
    public final QueryColumn REQUEST_URI = new QueryColumn(this, "request_uri");

    /**
     * 执行时间(ms)
     */
    public final QueryColumn EXECUTION_TIME = new QueryColumn(this, "execution_time");

    /**
     * 请求方式
     */
    public final QueryColumn REQUEST_METHOD = new QueryColumn(this, "request_method");

    /**
     * 请求参数(批量请求参数可能会超过text)
     */
    public final QueryColumn REQUEST_PARAMS = new QueryColumn(this, "request_params");

    /**
     * 浏览器版本
     */
    public final QueryColumn BROWSER_VERSION = new QueryColumn(this, "browser_version");

    /**
     * 返回参数
     */
    public final QueryColumn RESPONSE_CONTENT = new QueryColumn(this, "response_content");

    /**
     * 所有字段。
     */
    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");

    /**
     * 默认字段，不包含逻辑删除或者 large 等字段。
     */
    public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, MODULE, REQUEST_METHOD, REQUEST_PARAMS, RESPONSE_CONTENT, CONTENT, REQUEST_URI, METHOD, IP, PROVINCE, CITY, EXECUTION_TIME, BROWSER, BROWSER_VERSION, OS, CREATE_BY, CREATE_TIME, IS_DELETED};

    public TbLogTableDef() {
        super("", "tb_log");
    }

    private TbLogTableDef(String schema, String name, String alisa) {
        super(schema, name, alisa);
    }

    public TbLogTableDef as(String alias) {
        String key = getNameWithSchema() + "." + alias;
        return getCache(key, k -> new TbLogTableDef("", "tb_log", alias));
    }

}
